<?php
class PersonasController extends AppController {

	var $name = 'Personas';
	var $uses = array('Persona', 'Usuario');

	function beforeFilter () {
		parent::beforeFilter();
		//$this->Auth->allow('add', 'login', 'index', 'edit');
		$this->Auth->allowedActions = array('*');
	}

	function index() {
		$this->Persona->recursive = 0;
		$this->set('personas', $this->paginate());


	}

	function view($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('persona Inválida', true));
			$this->redirect(array('action' => 'index'));
		}
		$this->set('persona', $this->Persona->read(null, $id));
	}

	function add($tipo = null, $persona = null) {

		if( !empty($tipo) && !empty($persona)){
			//$this->set('var', array('tipo' => $tipo, 'persona' => $persona));

			$this->set('tipo', $tipo);
			$this->set('persona', $persona);
		}

		if (array_key_exists('cancelar', $this->params['form'])) {
        	$this->Session->setFlash('Operación cancelada, ningún dato fue agregado.');
        	$this->redirect(array('action' => 'index'));
    	}
		if (!empty($this->data)) {

			$this->Persona->create();
			$this->Usuario->create();
			//pr($this->data);
			//exit();

			$this->data['Persona']['correo'] = trim($this->data['Persona']['correo']);

			if ($this->Persona->save($this->data)) {

				$this->data['Usuario']['persona_id'] = $this->Persona->getLastInsertID();

				if($this->Usuario->save($this->data)){

					//****** ARO Objetos a Manipular (Personas) ********
//					$aro = new Aro();
//					$data_aro = array(
//						'alias'=>$this->data['Usuario']['usuario'],
//						'parent_id'=>$this->data['Usuario']['rol_id'],
//						'model'=>'Usuario',
//						'foreign_key'=>$this->Usuario->getLastInsertID()
//					);
//					$aro->create();
//					$aro->save($data_aro);
					//**************************************************

					$this->Session->setFlash('Datos agregados exitosamente.');
					$this->redirect(array('action' => 'index'));
				}

			} else {
				$this->Session->setFlash('Datos no agregados. Por favor, intente de nuevo.');
				$tipo = $this->data['Persona']['tipo'];
				$persona = $this->data['Persona']['persona'];
				$this->redirect('add/' . $tipo . '/' . $persona);

				//Para resetear el campo de clave
				unset($this->data['Usuario']['clave']);
			}
		}

//		$aros = $this->Aro->find(
//		'list',
//			array (
//			'conditions'=> array ('Aro.parent_id'=>NULL), //array de condiciones
//			'recursive'=>1, //int
//			'fields'=> array ('Aro.id', 'Aro.alias'), //array de nombres de campos
//			'order'=>null, //string o array definiendo el orden
//			'group'=> array (), //campos para GROUP BY
//			'limit'=>null, //int
//			'page'=>null //int
//			)
//		);
//
//		$this->set('aros', $aros);

	}

	function edit($id = null) {

		if (array_key_exists('cancelar', $this->params['form'])) {
        	$this->Session->setFlash('Operación cancelada, ningún dato fue editado.');
        	$this->redirect(array('action' => 'index'));
    	}
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('persona Inválida', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			$this->data['Persona']['correo'] = trim($this->data['Persona']['correo']);
			if ($this->Persona->save($this->data)) {

				if($this->Usuario->save($this->data)){
					$this->Session->setFlash(__('Datos editados exitosamente.', true));
					$this->redirect(array('action' => 'index'));
				}

			} else {
				$this->Session->setFlash(__('Datos no editados. Por favor, intente de nuevo.', true));
				$data = $this->Session->read('data');
				$this->set('data', $data);
			}
		}
		if (empty($this->data)) {
			$this->Session->delete('data');
			$this->data = $this->Persona->read(null, $id);
			$data = $this->Persona->Usuario->find('first', array('conditions' => array('Usuario.persona_id' => $id)));
			$this->Session->write('data', $data);
			$this->set('data', $data);
			//debug($data);
			//exit();
			//print_r($data);
		}

	}

	function delete($id = null) {
		if (array_key_exists('cancelar', $this->params['form'])) {
        	$this->Session->setFlash('Operación cancelada, ningún dato fue borrado.');
        	$this->redirect(array('action' => 'index'));
    	}
		if (!$id) {
			$this->Session->setFlash(__('Id Inválida para persona', true));
			$this->redirect(array('action'=>'index'));
		}
		if ($this->Persona->delete($id)) {
			$this->Session->setFlash(__('Datos borrados exitosamente', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->Session->setFlash(__('Persona no fue borrado', true));
		$this->redirect(array('action' => 'index'));
	}

	function xls () {
		$this->index();
	}
}
?>